#pragma once

#include <AVUIFrameworkContentElement.h>

namespace AVUI {
class Brush;
class TextElement : public FrameworkContentElement
{
public:

    DECLARE_ELEMENT(TextElement, FrameworkContentElement);

    DECLARE_DEPENDENCY_PROPERTY(Foreground);
    TRefCountedPtr<Brush> get_Foreground() { return (Brush*)(Object*)GetValue(get_ForegroundProperty()); }
    void set_Foreground(Brush* pValue) { SetValue(get_ForegroundProperty(), (Object*)pValue); } 

    DECLARE_DEPENDENCY_PROPERTY(FontFamily);
    String* get_FontFamily() { return object_cast<String>(GetValue(get_FontFamilyProperty())); }
    void set_FontFamily(String* pFontFamily) { SetValue(get_FontFamilyProperty(), pFontFamily); }

    DECLARE_DEPENDENCY_PROPERTY(FontSize);
    float get_FontSize() { return UnboxValue< float >(GetValue(get_FontSizeProperty())); }
    void set_FontSize(float value) { SetValue(get_FontSizeProperty(), AVUI::BoxValue(value)); }

    DECLARE_DEPENDENCY_PROPERTY(FontStyle);
    String* get_FontStyle() { return object_cast<String>(GetValue(get_FontStyleProperty())); }
    void set_FontStyle(String* pFontStyle) { SetValue(get_FontStyleProperty(), pFontStyle); }

    DECLARE_DEPENDENCY_PROPERTY(FontWeight);
    String* get_FontWeight() { return object_cast<String>(GetValue(get_FontWeightProperty())); }
    void set_FontWeight(String* pFontWeight) { SetValue(get_FontWeightProperty(), pFontWeight); }

private:
    static void StaticConstructor();

};


}; // namespace AVUI
